// import {
//   getRecipes
// } from '../../api/recipes';
import {
  getHotRecipes
} from '../../api/recommend';
import {
  getFollowList,
  followAuthor,
  unFollowAuthor
} from '../../api/user';
const app = getApp(); // 获取 app.js 的实例

Page({
  data: {
    isLogin: false,
    recommendationList: [], // 推荐列表数据
    isLoading: false, // 是否正在加载
    isRefreshing: false, // 是否正在刷新
    current: 1, // 当前页码
    pageSize: 10, // 每页大小
    activeTab: '推荐', // 默认选中的顶部导航栏
    activeFooterItem: '首页', // 默认选中的底部导航栏
    showLoginModal: false,
    currentTab: '推荐', // 默认选中的tab
    hasMoreData: true, // 是否还有更多数据
    follows: [], // 用户关注列表
  },

  async onLoad(options) {
    console.log("index.js的onload执行了。。。。。。");
    this.loadRecommendations(); // 加载推荐列表
    const res = await app.checkLoginStatus();
    // 初始化加载数据
    if(res){
      this.setData({
        isLogin: true
      });
      
      this.loadFollows(); // 加载关注列表】
      console.log("onloadfollow执行了。。。。。。");
    }
  },
  onShow() {
    // 初始化加载数据
    this.resetAndLoadData();
    if(this.data.isLogin){
      this.loadFollows(); // 登录状态加载关注列表
      console.log("onshowfollow执行了。。。。。。");
    }
    
  },

  // 监听上滑到底部，加载更多数据
  onReachBottom() {
    console.log('触发上拉加载更多');
    // 只有在推荐标签页并且有更多数据时才加载
    if (this.data.currentTab === '推荐' && this.data.hasMoreData && !this.data.isLoading) {
      wx.showLoading({
        title: '加载中...',
      });
      this.loadRecommendations();
    }
  },

  // 切换顶部导航栏
  onTabClick(e) {
    const tab = e.currentTarget.dataset.tab;
    this.setData({
      activeTab: tab
    });
    this.setData({
      currentTab: tab
    }); // 更新当前选中的tab
    if (tab === '关注列表') {
      this.loadFollows();
    }
  },

  // 切换底部导航栏
  onFooterClick(e) {
    const item = e.currentTarget.dataset.item;
    this.setData({
      activeFooterItem: item
    });
  },

  // 重置数据并重新加载(热门推荐)
  resetAndLoadData() {
    console.log("重置了。。。。。。");

    this.setData({
      recommendationList: [],
      current: 1, // 重置页码
      hasMoreData: true, // 重新设置为有数据
    });
    this.loadRecommendations();
  },

  // 加载推荐数据(更多美味)
  loadRecommendations() {
    if (this.data.isLoading || !this.data.hasMoreData) return; // 防止重复加载和没有更多数据时继续请求
    this.setData({
      isLoading: true
    });
    // 封装请求参数
    const params = {
      current: this.data.current, // 当前页码
      pageSize: this.data.pageSize, // 每页大小
    };
    
    console.log('请求热榜数据，参数:', params);
    
    getHotRecipes(params)
      .then(res => {
        console.log('获取热榜数据成功:', res);
        const newData = res.data || []; // 确保数据存在，避免空值
        
        // 合并新数据到现有列表
        this.setData({
          recommendationList: this.data.recommendationList.concat(newData),
          current: this.data.current + 1, // 增加页码
          isLoading: false,
          isRefreshing: false, // 停止刷新
        });
    
        // 使用后端返回的分页信息判断是否还有更多数据
        if (res.currentPage >= res.totalPages || newData.length === 0) {
          this.setData({
            hasMoreData: false, // 标记没有更多数据
          });
          console.log('没有更多数据了，当前页/总页数:', res.currentPage, '/', res.totalPages);
        } else {
          console.log('还有更多数据，当前页/总页数:', res.currentPage, '/', res.totalPages);
        }
        
        wx.hideLoading(); // 隐藏加载提示
      })
      .catch(error => {
        console.error('加载推荐数据失败', error);
        this.setData({
          isLoading: false,
          isRefreshing: false
        });
        wx.hideLoading();
        wx.showToast({
          title: '加载失败，请重试',
          icon: 'none'
        });
      });
  },

  // 上拉加载更多
  loadMore() {
    if (!this.data.isLoading && this.data.hasMoreData) {
      this.loadRecommendations();
    }
  },

  // 下拉刷新
  onRefresh() {
    this.setData({
      isRefreshing: true
    });
    this.resetAndLoadData(); // 重置数据并重新加载
  },

  // 跳转recipeDetail菜谱详情页
  goToRecipeDetail(event) {
    const recipeId = event.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/recipeDetail/recipeDetail?recipeId=${recipeId}`
    });
  },

  // 跳转到搜索页
  navigateToSearch() {
    wx.navigateTo({
      url: '/pages/search/search'
    });
  },


  // 检查用户登录状态并跳转到收藏页面
  navigateToMyCollect() {
    this.checkLogin(() => {
      wx.navigateTo({
        url: '/pages/myCollect/myCollect'
      });
    });
  },

  // 封装登录检查逻辑
  checkLogin(successCallback) {
    const userInfo = app.store.getUserInfo();
    if (userInfo && userInfo.id) {
      successCallback();
    } else {
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      });
      this.setData({
        showLoginModal: true
      });
    }
  },

  // 登录弹窗关闭
  onLoginModalClose() {
    this.setData({
      showLoginModal: false
    });
  },

  // 登录成功
  onLoginSuccess() {
    console.log("首页登录回调执行了。。。。。。");
    
    this.setData({
      showLoginModal: false
    });
    wx.showToast({
      title: '登录成功',
      icon: 'success'
    });
    // 登录成功后重新加载关注列表
    this.loadFollows();
    
    // 如果当前是关注列表标签，确保UI更新
    if (this.data.currentTab === '关注列表') {
      // 可以添加一些视觉反馈，比如显示加载中
      wx.showLoading({
        title: '加载关注列表',
      });
      
      // 延迟一小段时间后隐藏加载提示
      setTimeout(() => {
        wx.hideLoading();
      }, 1000);
    }
  },

  // 从后端加载关注列表
  async loadFollows() {
    try {
      const userInfo = app.store.getUserInfo();
      console.log("userinfo::::",userInfo);
      // 如果用户未登录，直接返回
      if (!userInfo || !userInfo.userId) {
        this.setData({
          showLoginModal: true
        });
        return;
      }
      const res = await getFollowList(userInfo.userId);
      if (res.data) {
        // 给每个列表项添加 isFollowing 字段
        const updatedFollows = res.data.map(item => ({
          ...item,
          isFollowing: true
        }));
        this.setData({
          follows: updatedFollows
        });
      } else if (res.data === null) {
        this.setData({
          follows: []
        });
      } else {
        wx.showToast({
          title: '获取关注列表失败',
          icon: 'none'
        });
      }
    } catch (error) {
      console.error('获取关注列表失败:', error);
      wx.showToast({
        title: '获取关注列表失败',
        icon: 'none'
      });
    }
  },

  // 关注或取关操作
  async toggleFollow(event) {
    // 获取数据集
    const followeeId = event.currentTarget.dataset.userid;
    const isFollowing = event.currentTarget.dataset.isfollowing;
    
    console.log('关注/取关操作:', followeeId, isFollowing);
    
    // 获取当前登录用户信息
    const userInfo = app.store.getUserInfo();
    
    // 检查用户是否登录
    if (!userInfo || !userInfo.userId) {
      this.setData({
        showLoginModal: true
      });
      return;
    }
    
    try {
      // 构建完整的请求参数
      const data = {
        followerId: userInfo.userId,
        followeeId: followeeId
      }
      
      console.log('关注/取关请求参数:', data);
      
      if (isFollowing) {
        // 取消关注
        const res = await unFollowAuthor(data);
        if (res.success) {
          this.updateFollowStatus(followeeId, false);
          wx.showToast({
            title: '已取消关注',
            icon: 'success'
          });
        }
      } else {
        // 关注
        const res = await followAuthor(data);
        if (res.success) {
          this.updateFollowStatus(followeeId, true);
          wx.showToast({
            title: '已关注',
            icon: 'success'
          });
        }
      }
    } catch (error) {
      console.error('操作失败:', error);
      wx.showToast({
        title: '操作失败',
        icon: 'none'
      });
    }
  },
  // 更新关注状态
  // 更新关注状态
  updateFollowStatus(followeeId, isFollowing) {
    console.log('更新关注状态:', followeeId, isFollowing);
    const follows = this.data.follows.map(user => {
    // 使用 userId 而不是 id 进行匹配
    if (user.userId === followeeId) {
      console.log('找到匹配用户，更新状态');
      return {
        ...user,
        isFollowing: isFollowing
      };
    }
    return user;
  });
  
  console.log('更新后的关注列表:', follows);
  this.setData({
    follows
  });
},

  onPullDownRefresh() {
    this.setData({
      page: 1,
      recommendationList: [],
      hasMoreData: true
    }, () => {
      this.loadRecommendations();
      wx.stopPullDownRefresh();
    });
  },

  navigateToUserDetail(event) {
    console.log("navigateToUserDetail event:", event);
    const userId = event.currentTarget.dataset.userId;
    console.log("跳转到用户详情页，userId:", userId);
    wx.navigateTo({
      url: `/pages/userDetail/userDetail?userId=${userId}`
    });
  }
  // // 页面中的方法
  // navigateToHome() {
  //   wx.switchTab({
  //     url: '/pages/home/home' // 跳转到首页
  //   });
  // },

  // navigateToFridge() {
  //   wx.switchTab({
  //     url: '/pages/fridgeManagement/fridgeManagement' // 跳转到冰箱管理页
  //   });
  // },

  // navigateToMyCollect() {
  //   wx.switchTab({
  //     url: '/pages/myCollect/myCollect' // 跳转到收藏页
  //   });
  // },

  // navigateToMy() {
  //   wx.switchTab({
  //     url: '/pages/my/my' // 跳转到我的页面
  //   });
  // }
});